(1) Field of the Invention
This invention relates to a computer program and apparatus for controlling computing resources, and a distributed processing system, and more particularly to a computer program and apparatus for controlling computing resources, and a distributed processing system, for assigning and distributing computing tasks to a plurality of computing nodes.
(2) Description of the Related Art
With recent development of hardware technology, higher-performance and more cost-effective computers come up one after another. Especially, small and medium computers such as desktop personal computers (PC) have noticeable improvement in processing performance per unit cost. Therefore, a distributed processing system that realizes comparable processing performance to a large-scale computer is built by connecting a large number of inexpensive computers over a network. A distributed processing system comprising computers having different computing resources is called a computer grid.
Such a distributed processing system can be built at a low cost, as compared with a large-scale computer. In addition, it is easy to enhance the processing performance according to necessity after the system is built. In the distributed processing system, hardware resources that can perform computing tasks independently are each called a computing node in the following description.
By the way, in order to maximize the execution efficiency of computing tasks in the distributed processing system, what is important is how to schedule the computing tasks, that is, to determine which computing tasks are assigned to which computing nodes. At this point, in a conventional distributed processing system, a system administrator or a user checks the execution state of a computing task on each computing node, and manually reserves computing nodes in advance. However, there arise problems that this manual reservation is a complicated work and may not always lead to the maximized execution efficiency.
There is a known technique in which a management computer is provided to manage computing nodes and is designed to automatically determine which computing node is to be allocated to a new computing task. In the technique disclosed in Japanese Unexamined Patent Publication No. 2005-174201, for example, a management computer detects the operating state of each computing node and assigns a new computing task to a computing node having a low load. In addition, with the technique disclosed in Japanese Unexamined Patent Publication No. 2005-56201, a computing node to be allocated to a new computing task is determined with taking the predicted execution time and priority of the computing task into consideration. These make it possible to easily enhance the execution efficiency of computing tasks by the best use of the processing performance of the distributed processing system.
However, in these techniques disclosed in the above Japanese Unexamined Patent Publication Nos. 2005-174201 and 2005-56201, preparations that should be done before start of a computing task are not considered. This causes an improper order of assignment of computing tasks, and therefore a considerable time may be taken for preparations, with the result that the execution efficiency deteriorates.
The preparations are a process of changing the state of running software in a computing node. Each computing task requires some software (operating system (OS), application software, library, and so on) for execution. If software necessary for a computing task does not run, the computing node should make preparations of starting the necessary software. On the other hand, if all software necessary for the computing task is running, the preparations are not required.
In order to improve the execution efficiency of computing tasks, what is important is to take software running on each computing node into consideration. This consideration is very critical in the case where software that cannot run at the same time exist. For example, in general, only one OS can run on one computing node. Therefore, if an OS different from a running OS is required, the computing node should stop the running OS first. Suppose now that there are computing tasks A and C that require OS-1 and computing tasks B and D that require OS-2. If a computing node executes the computing tasks A, B, C, and D in order, the computing node should switches between the OSs every time the computing tasks are executed, which remarkably deteriorates the execution efficiency.